#pragma once
#include "Structure.h"
#include <string>
#include <list>

enum QType :unsigned int
{
	Non = 0,
	Sysmeatic = 1,
	Affinear = 2
};

enum TensorType : unsigned int
{
	FLOAT_FP32 = 0,
	INT_INT8 = 1,
};

struct TensorHeader
{
	std::string name;
	TensorType type;
	unsigned int depth;
	unsigned int channel;
	unsigned int height;
	unsigned int width;
	QType type;
	float scale;
	unsigned int zero;
	unsigned int* byte;
};

class TensorStack
{
private:
	std::list<TensorHeader> infos;
public:
	TensorStack();
	~TensorStack();

	void AddTensor(std::string layerName, const DL::Tensor1D<float>& tensor);
	void AddTensor(std::string layerName, const DL::Tensor2D<float>& tensor);
	void AddTensor(std::string layerName, const DL::Tensor3D<float>& tensor);
	void AddTensor(std::string layerName, const DL::Tensor4D<float>& tensor);
	void AddTensor(std::string layerName, const DL::Tensor1D<int8>& tensor);
	void AddTensor(std::string layerName, const DL::Tensor2D<int8>& tensor);
	void AddTensor(std::string layerName, const DL::Tensor3D<int8>& tensor);
	void AddTensor(std::string layerName, const DL::Tensor4D<int8>& tensor);
private:

};